Browser elements for communicating with other browser elements and with external applications

ABSTRACT

Techniques for configuring direct communicating between browser elements running in a browser and for direct communication between a browser element and an external application are described. Browser elements communicate with each other by referencing unique identifiers associated with the browser elements. External applications communicate directly with browser elements by referencing unique identifiers associated with the browser elements. 
     Browser elements are configurable as web services and communicate using various communication architectures and protocols. Application programming interfaces associated with browser elements configured as web services are accessible to web browsers through web scripting modules.

BACKGROUND

Web browsers have evolved over the years, from web browsers that weretypically used to view static web pages to dynamic web pages and webapplications that have browser elements that can be configured foranimation, audio, video, high resolution images, web scripts,applications, etc. However, one problem that exists with currentbrowsers is that browser elements running in web browsers are unable todirectly communicate with each other and this can hinder browserfunctionality. Further, external applications are unable to initiatedirect communication with browser elements running in web browsers. As aresult, development of web applications utilizing communication withbrowser elements is limited.

SUMMARY

The following presents a simplified summary of the disclosure to providea basic understanding to the reader. This summary is not an extensiveoverview of the disclosure and it does not identify key/criticalelements of the invention or delineate the scope of the invention. Itssole purpose is to present some concepts disclosed herein in asimplified form as a prelude to the more detailed description that ispresented later.

Described herein are various techniques for configuring browser elementsrunning in browsers to communicate with each other and/or externalapplications. A browser element is configured as a web service andapplication programming interfaces associated with the browser elementcan be accessed by other browser elements or by external applications.In at least one implementation, such configuring includes providing eachbrowser element with a communicator module and assigning each browserelement a unique identifier that is directly addressable by otherbrowser elements and/or external applications. A browser element thathas a communicator module may initiate communication with anotherbrowser element having a communicator module by referencing the uniqueidentifier associated with the other browser element. Similarly, anexternal application may initiate communication with a browser elementhaving a communicator module by referencing the unique identifier of theother browser element.

Many of the attendant features will be more readily appreciated as thesame becomes better understood by reference to the following detaileddescription considered in connection with the accompanying drawings.

DESCRIPTION OF THE DRAWINGS

The present description will be better understood from the followingdetailed description read in light of the accompanying drawings,wherein:

FIG. 1 illustrates an exemplary system for communicating between browserelements running in a browser.

FIG. 2 illustrates an exemplary system for communicating between browserelements running in a browser and a local web service.

FIG. 3 illustrates an exemplary system for communicating between browserelements running in a browser and an external application.

FIG. 4 illustrates an exemplary computing environment in which thevarious technologies described herein may be implemented.

DETAILED DESCRIPTION Overview

The detailed description provided below describes techniques forcommunicating between browser elements and between a browser element andan external application. One or more browser elements are executed in abrowser and may be displayed by a user interface of the browser. Abrowser element is configured as a web service so that it can receivedata from a local web service running on a local client computing devicerunning the browser as well as receive data from a an external webservice running on one or more external web servers.

The web service contains one or more application programming interfacesthat can be accessed by a web script via a web scripting module includedin the browser. The web scripting module supports one or more webscripting languages capable of accessing the application programminginterface through a web script.

The browser element is also configured to include a communicator module,which supports one or more communication architectures and one or morecommunication protocols.

The browser element is assigned a unique identifier. The uniqueidentifier is directly addressable by other browser elements and/orexternal applications. Accordingly, a different browser element or anexternal application can initiate communication with the browser elementby referencing the corresponding unique identifier.

FIG. 1 depicts an exemplary system 100 for enabling communicationbetween browser elements running in a browser. The exemplary systemincludes a client computing device 102 running a browser 104. The clientcomputing device 102 is operatively connected to the Internet 142 thatis operatively connected to a web server 144. The browser 104 includes aweb scripting module 106 and a user interface 108. The web scriptingmodule 106 includes one or more web scripts 107. A first browser element110 and a second browser element 112 execute in the browser 104 and aredisplayed by the user interface 108.

The first browser element 110 includes a user interface component 113.The user interface component 113 is configurable to determine how thefirst browser element 110 is displayed in the user interface 108. It isnoted that the user interface component 113 may also be configured foradditional purposes for web design using one or more programminglanguages supported by the browser 104.

The first browser element 110 is configured as a web service 114. Theweb service 114 includes an API (Application Programming Interface) set116. The API set 116 includes one or more application programminginterfaces 116. The API set 116 is extensible and may include a varietyof functions and/or methods for execution. The first browser element 110also includes a unique identifier 118. The unique identifier 118 may bean internet protocol address, a combination of numbers and letters, auniform resource identifier, and the like.

The first browser element 110 also includes a communicator module 120,which can be a dynamic link library, a runtime library, and the like.The communicator module 120 supports one or more communicationarchitectures and one or more communication protocols. It is noted thatalthough the communicator module 120 is shown as being separate from theweb service 114, the communicator module 120 may be included in the webservice 114.

The second browser element 112 includes a user interface component 121.The user interface component 121 is configurable to determine how thesecond browser element 112 is displayed in the user interface 108. It isnoted that the user interface component 121 may also be configured foradditional purposes for web design using one or more programminglanguages supported by the browser 104.

The second browser element 112 is configured as a web service 122. Theweb service 122 includes an API (Application Programming Interface) set124. The API set 124 is extensible and may include a variety offunctions and/or methods for execution. The second browser element 112also includes a unique identifier 126. The unique identifier 126 may bean internet protocol address, a combination of numbers and letters, andthe like. It is noted that the unique identifier 118 and the uniqueidentifier 126 are different.

The second browser element 112 also includes a communicator module 128,which can be a dynamic link library, a runtime library, and the like.The communicator module 128 supports one or more communicationarchitectures and one or more communication protocols. It is noted thatalthough the communicator module 128 is shown as being separate from theweb service 122, the communicator module 128 may be included in the webservice 122.

It is noted that the communicator modules 120, 128 support at least onecommon communication architecture and at least one common communicationprotocol if direct communication between browser elements is desired.For example, one communication architecture supported by thecommunicator modules 120, 128 is a client/server architecture. Oneexample of a communication protocol supported by the communicatormodules 120, 128 is TCP/IP.

In at least one implementation, the second browser element 112 isconfigured to initiate communication with the first browser element 110.The second browser element 112 initiates the communication byreferencing the unique identifier 118 of the first browser element 110in a request to communicate. The first browser element 110 receives therequest to communicate from the second browser element 112 andthereafter may respond to the request immediately, respond to therequest at a later time, process the request or ignore the request.

The communicator modules 120, 128 are configurable to determine how therespective browser elements 110, 112 initiate communication requests.The communicator modules 120, 128 are also configurable to determine howthe respective browser elements 110, 112 initiate communicationrequests.

In the presently described example, the communication architecturesupported is client/server and the communication protocol is TCP/IP. Thesecond browser element 112 acts as a client and the first browserelement 110 acts as a server. The communicator modules 120, 128 of therespective browser elements 110, 112 communicate using TCP/IP. Theunique identifier of each browser element 110, 112 is a unique IPaddress.

It is noted that the communicator module 120 may be a component of theweb service 114. It is also noted that communication between the firstbrowser element 110 and the second browser element 112 can be initiatedby either browser element and that each browser element 110, 112 may actas a client or as a server. Various communication protocols may beimplemented to enable communication between the first browser element110 and the second browser element 112. It is also noted that suchcommunication is not limited to two browser elements and may support aplurality of browser elements.

In at least one implementation, a user of the web browser 104 is able toinitiate communication to the first browser element 110 from the secondbrowser element 112 as described above. For example, the user interfacecomponent 121 of the second browser element 112 may include a commandprompt interface (not shown) into which the user types commandscorresponding to instructions for the first browser element 110. Thecommand prompt interface executes the web script 107 to access the APIset 124 of the second browser element 112 that communicates the commandsto the second browser element 112. The second browser element 112receives the commands and operates accordingly.

FIG. 2 depicts an exemplary system 200 for communicating between abrowser element running in a browser and a local web service. In thefollowing description, continuing reference is made to one or moreelements shown in FIG. 1, and the same reference numerals used inassociation with these elements in FIG. 1 are also used in FIG. 2.

The client computing device 102 executes a local web service 202 thatincludes at least one application programming interface 203. Either ofthe browser elements 110, 112 may access the local web service 202. Thelocal web service 202 monitors at least one internal parameter 206 of aninternal device 204, which can be a computer processor, random accessmemory, computer thermometer, computer clock, a configurable device, andthe like. The internal device 204 may be configured through the localweb service 202.

The internal parameter 206 is measurable or quantifiable data associatedwith the internal device 204. For example, if the internal device is acomputer processor of a computing device, an internal parameterassociated with the computer processor may be usage of the computerprocessor in real-time. The local web service 202 is able to monitor,record, and provide access to the internal parameter 206.

The local web service 202 also monitors at least one external parameter210 of an external device 208, which can be a coffee maker, atelevision, a garage door opener, a robot, a separate computing device,and the like. The external device 208 may be connected to the clientcomputing device 102 wirelessly or wired. For example, a robot may beconnected to the client computing device 102 wirelessly using aBluetooth® wireless connection mechanism (not shown).

The external parameter 210 is measurable or quantifiable data associatedwith the external device 208. For example, if the external device is atelevision that is connected to the client computing device 102 usingBluetooth, then an external parameter associated with the television maybe an indication of whether or not the television is powered on. Thelocal web service 202 is able to monitor, record, and provide access tothe external parameter. The external device 208 may be configuredthrough the local web service 202.

FIG. 3 depicts an exemplary system 300 for communicating between abrowser element executing in a browser and an external application. Inthe following description, continuing reference is made to one or moreelements shown in FIG. 1 and FIG. 2, and the same reference numeralsused in association with these elements in FIG. 1 and FIG. 2 are alsoused in FIG. 3.

The web server 144 executes an external web application 302 thatprovides a web service 304. Either of the browser elements 110, 112 mayaccess the web service 304 and thereby provide access from the webservice 114 or the web service 122, respectively, to the external webapplication 302. It is also noted that either the first browser element110 or the second browser element 112 may also be configured as the webservice 304.

In at least one implementation, the first browser element 110 isconfigured to subscribe to the web service 304. It is noted that thefirst browser element 110, the second browser element 112 or both maysubscribe to the web service 304. By subscribing to the web service 304,the first browser element 110 will receive information from the webservice 304 in the future without requesting the information from theweb service 304.

For example, the first browser element 110 may be a map application thatdisplays traffic incidents and the web service 304 may provide trafficincident data. The first browser element 110 can then receive trafficincident data without initiating a request for traffic incident data. Itis noted that how often traffic incident data is sent to the firstbrowser element 110 is configurable. The web service 304 may providetraffic incident data at regular intervals, when incidents occur or thelike. For example, the first browser element 110 may be configured tohave traffic incident data sent by the web service 304 as trafficincidents occur. Alternatively, the browser element may be configured tohave the traffic incident data sent by the web service 304 in fifteenminute intervals.

It is noted that communication between the browser element 110 and theweb service 304 is similar to the communication between the browserelement 110 and the local web service 202.

FIG. 4 depicts an exemplary computing environment in which the varioustechnologies described herein may be implemented. Exemplary computingenvironment 400 is only one example of a computing system and is notintended to limit the examples described in this application to thisparticular computing environment. The method for configuring a browserelement to communicate with other browser elements and with externalapplications may be loaded onto a computing device 401 through the useof computer readable media 405, 406 or over a network 414. Once loadedonto the computing device 401 the method may reside as an applicationprogram 450 on an internal hard drive 410. When processing, the methodmay also exist as an application program 455 loaded into system memory409.

The computing device 401 can be implemented with numerous other generalpurpose or special purpose computing system configurations. Examples ofwell known computing systems, may include, but are not limited to,personal computers, hand-held or laptop devices, microprocessor-basedsystems, multiprocessor systems, set top boxes, gaming consoles,consumer electronics, cellular telephones, PDAs, and the like.

Components of computing device 401 can include one or more processors(including CPUs, GPUs, microprocessors and the like) 407, a systemmemory 409, a system bus 408 that couples the various system components,and the method described above. Processor 407 processes various computerexecutable instructions, including those to execute and run the methodfor configuring a browser element to communicate with other browserelements and with external applications 450 to control the operation ofcomputing device 401 and to communicate with other electronic andcomputing devices (not shown). The system bus 408 represents any numberof several types of bus structures, including a memory bus or memorycontroller, a peripheral bus, an accelerated graphics port, and aprocessor or local bus using any of a variety of bus architectures.

The system memory 409 may include computer-readable media in the form ofvolatile memory, such as random access memory (RAM), and/or non-volatilememory, such as read only memory (ROM). A basic input/output system(BIOS) is stored in ROM. RAM typically contains data and/or programmodules that are immediately accessible to and/or presently operated onby one or more of the processors 407. The method for configuring abrowser element to communicate with other browser elements and withexternal applications 455 may be stored in RAM and may be accessible toand/or presently operated on by one or more of the processors 407.

Mass storage devices 404 may be coupled to the computing device 401 orincorporated into the computing device by coupling to the buss. Suchmass storage devices 404 may include a magnetic disk drive which readsfrom and writes to a removable, non-volatile magnetic disk (e.g., a“floppy disk”) 405, or an optical disk drive that reads from and/orwrites to a removable, non-volatile optical disk such as a CD-ROM or thelike 406. Computer readable media such as 405, 406 typically embodycomputer readable instructions, data structures, program modules and thelike supplied on floppy disks, CDs, portable memory sticks and the like.The method for configuring a browser element to communicate with otherbrowser elements and with external applications 465 may be provided tothe CPU 401 by the peripheral device 404.

The methods previously described may be disposed on these computerreadable media.

Any number of program modules can be stored on the hard disk 410, Massstorage devices 404, ROM and/or RAM 409, including by way of example, anoperating system, one or more application programs, other programmodules, and program data. The method for configuring a browser elementto communicate with other browser elements and with externalapplications 450 may be stored on the hard disk 410 or made availablethrough a peripheral drive 404. Each of such operating system,application programs, other program modules and program data (or somecombination thereof) may include an embodiment of the systems andmethods described herein.

A display device 402 can be connected to the system bus 408 via aninterface, such as a video adapter 411. The display device 402 displaysthe method for configuring a browser element to communicate with otherbrowser elements and with external applications. A user can interfacewith computing device 402 via any number of different input devices 403such as a keyboard, pointing device, joystick, game pad, serial port,and/or the like. These and other input devices are connected to theprocessors 407 via input/output interfaces 412 that are coupled to thesystem bus 408, but may be connected by other interface and busstructures, such as a parallel port, game port, and/or a universalserial bus (USB).

Computing device 401 can operate in a networked environment usingconnections to one or more remote computers through one or more localarea networks (LANs), wide area networks (WANs) and the like. Thecomputing device 401 is connected to a network 414 via a network adapter413 or alternatively by a modem, DSL, ISDN interface or the like.

The storage devices utilized to store program instructions can bedistributed across a network. For example a remote computer may store anexample of the process described as software. A local or terminalcomputer may access the remote computer and download a part or all ofthe software to run the program. Alternatively the local computer maydownload pieces of the software as needed, or distributively process byexecuting some software instructions at the local terminal and some atthe remote computer (or computer network). It is noted that by utilizingconventional techniques, all, or a portion of the software instructionsmay be carried out by a dedicated circuit, such as a DSP, programmablelogic array, or the like.

1. A browser, comprising: a user interface having one or more browserelements, each browser element being configurable as a web service,wherein each browser element contains a communicator module configurableto communicate with one or more other browser elements and one or moreexternal web services; and a web scripting module configurable to accesseach web service of each browser element.
 2. The browser of claim 1,wherein each browser element is associated with a unique identifier. 3.The browser of claim 2, wherein the unique identifier is an internetprotocol address.
 4. The browser of claim 2, wherein the uniqueidentifier is a uniform resource identifier.
 5. The browser of claim 1,wherein each browser element contains a user interface component.
 6. Thebrowser of claim 5, wherein the user interface component is configurableto support different programming languages.
 7. The browser of claim 6,wherein the user interface component is configurable to determine howeach browser element is displayed in the user interface.
 8. The browserof claim 1, wherein the web service includes one or more applicationprogramming interfaces.
 9. The browser of claim 8, wherein the webscripting module is configurable to support different programminglanguages.
 10. The browser of claim 9, wherein the web scripting modulecontains a web script.
 11. The browser of claim 10, wherein the webscript accesses the one or more application programming interface.
 12. Amethod for communicating between one or more browser elements in abrowser, comprising: executing a first browser element in the browser,the first browser element configurable as a first web service; executinga second browser element in the browser, the second browser elementconfigurable as a second web service; associating the first browserelement with a first unique identifier; associating the second browserelement with a second identifier; and initiating communication betweenthe first browser element and the second browser element, wherein thefirst element references the second unique identifier and sends arequest message to the second browser element.
 13. The method of claim12, wherein the first web service includes one or more applicationprogramming interfaces.
 14. The method of claim 13, wherein the browserincludes a web scripting module.
 15. The method of claim 14, wherein theweb scripting module includes a web script.
 16. The method of claim 15,wherein the web script accesses the one or more application programminginterfaces.
 17. The method of claim 12, wherein the browser includes auser interface.
 18. The method of claim 17, wherein each browser elementincludes a user interface component configurable to determine how eachbrowser element is displayed by the user interface.
 19. A method forcommunicating between one or more browser elements in a browser,comprising: executing a first browser element in the browser, the firstbrowser element configurable as a first web service, wherein the firstbrowser element contains a first communicator module configurable tocommunicate with one or more other browser elements and one or moreexternal web services; executing a second browser element in thebrowser, the second browser element configurable as a second webservice, wherein the second browser element contains a secondcommunicator module configurable to communicate with one or more browserelements and one or more external web services; configuring the firstand second communicator module to support a same communication protocol;associating the first browser element with a first unique identifier;associating the second browser element with a second identifier; andinitiating communication between the first browser element and thesecond browser element, wherein the first element references the secondunique identifier and sends a request message to the second browserelement.
 20. The method of claim 19, wherein the same communicationprotocol is Transmission Control Protocol/Internet Protocol.